package com.codefox.service;

import com.codefox.entity.TbDisease;
import com.codefox.mapper.TbDiseaseMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 病症类的服务层
 *
 * @author puma, xiaobiye
 * @date 2018年9月26日11:33:56,2018年9月28日16:45:13
 */
@Service
public class TbDiseaseService {
    final
    SqlSessionFactory factory;

    @Autowired
    public TbDiseaseService(SqlSessionFactory factory) {
        this.factory = factory;
    }

    /**
     * 查询所有
     *
     * @return 结果List集合
     */
    public List<TbDisease> listDisease() {
        List<TbDisease> list;
        try (SqlSession sqlSession = factory.openSession()) {
            TbDiseaseMapper mapper = sqlSession.getMapper(TbDiseaseMapper.class);
            list = mapper.listDisease();
        }
        return list;
    }

    /**
     * 根据condition查询
     *
     * @param condition 条件查询关键字
     * @return 结果LIst集合
     */
    public List<TbDisease> findByCondition(String condition) {
        List<TbDisease> list;
        try (SqlSession sqlSession = factory.openSession()) {
            TbDiseaseMapper mapper = sqlSession.getMapper(TbDiseaseMapper.class);
            list = mapper.findByCondition("%" + condition + "%");
        }
        return list;
    }

    /**
     * 添加病症
     *
     * @param disease 病症对象
     * @return 受影响的条数
     */
    @Transactional(rollbackFor = Exception.class)
    public int add(TbDisease disease) {
        try (SqlSession sqlSession = factory.openSession()) {
            TbDiseaseMapper mapper = sqlSession.getMapper(TbDiseaseMapper.class);
            return mapper.insertSelective(disease);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return 0;
    }

    @Transactional(rollbackFor = Exception.class)
    public int update(TbDisease disease) {
        try (SqlSession sqlSession = factory.openSession()) {
            TbDiseaseMapper mapper = sqlSession.getMapper(TbDiseaseMapper.class);
            return mapper.updateByPrimaryKeySelective(disease);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return 0;
    }

    @Transactional(rollbackFor = Exception.class)
    public int delete(Integer id) {
        try (SqlSession sqlSession = factory.openSession()) {
            TbDiseaseMapper mapper = sqlSession.getMapper(TbDiseaseMapper.class);
            return mapper.deleteById(id);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return 0;
    }

}
